Conventional computer systems utilize a von Neumann organization in which a single instruction stream is applied to a single processor to operate on a single data stream. In such systems, the performance is closely coupled to the performance of the single processor. In parallel systems, on the other hand, an array of processors operate in parallel on multiple data streams. Performance of the system can be increased as a function of the number of processors in the array as well as the performance of individual processors.
Parallel architectures generally fall into two categories: single instruction, multiple data (SIMD) and multiple instruction, multiple data (MIMD). In SIMD systems, a single instruction stream is broadcast to all processors of the array, and all processors simultaneously perform the same operations but on different sets of data. In MIMD systems, each processor is provided with its own instruction set so that different instructions can be applied to different sets of data in parallel. Although MIMD systems are more flexible in their applications, they can be more difficult to program and present the difficulty of transferring a large number of instruction sets to the many processors. SIMD systems, on the other hand, may be best suited to particular applications such as image processing, multidimensional signal processing, hydrodynamic simulation, seismic processing and neural network simulation.